{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['/mnt/tess/astronet/checkpoints/ext_37_run_1/1/AstroCNNModel_extended_20220424_204238',\n",
       " '/mnt/tess/astronet/checkpoints/ext_37_run_1/2/AstroCNNModel_extended_20220424_211606',\n",
       " '/mnt/tess/astronet/checkpoints/ext_37_run_1/3/AstroCNNModel_extended_20220424_214856',\n",
       " '/mnt/tess/astronet/checkpoints/ext_37_run_1/4/AstroCNNModel_extended_20220424_222154',\n",
       " '/mnt/tess/astronet/checkpoints/ext_37_run_1/5/AstroCNNModel_extended_20220424_225459',\n",
       " '/mnt/tess/astronet/checkpoints/ext_37_run_1/6/AstroCNNModel_extended_20220424_232744',\n",
       " '/mnt/tess/astronet/checkpoints/ext_37_run_1/7/AstroCNNModel_extended_20220425_000028',\n",
       " '/mnt/tess/astronet/checkpoints/ext_37_run_1/8/AstroCNNModel_extended_20220425_003345',\n",
       " '/mnt/tess/astronet/checkpoints/ext_37_run_1/9/AstroCNNModel_extended_20220425_010725',\n",
       " '/mnt/tess/astronet/checkpoints/ext_37_run_1/10/AstroCNNModel_extended_20220425_014111']"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "chkpt_root = '/mnt/tess/astronet/checkpoints/ext_37_run_1'\n",
    "data_files = '/mnt/tess/astronet/tfrecords-37-val/*'\n",
    "tces_file = '/mnt/tess/astronet/tces-v13-val.csv'\n",
    "\n",
    "nruns = 10\n",
    "\n",
    "def load_ensemble(chkpt_root, nruns):\n",
    "    checkpts = []\n",
    "    for i in range(nruns):\n",
    "        parent = os.path.join(chkpt_root, str(i + 1))\n",
    "        if not os.path.exists(parent):\n",
    "            break\n",
    "        all_dirs = os.listdir(parent)\n",
    "        if not all_dirs:\n",
    "            break\n",
    "        d, = all_dirs\n",
    "        checkpts.append(os.path.join(parent, d))\n",
    "    return checkpts\n",
    "\n",
    "paths = load_ensemble(chkpt_root, nruns)\n",
    "paths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running model 1\n",
      "2491 records\n",
      "Running model 2\n",
      "2491 records\n",
      "Running model 3\n",
      "2491 records\n",
      "Running model 4\n",
      "2491 records\n",
      "Running model 5\n",
      "2491 records\n",
      "Running model 6\n",
      "2491 records\n",
      "Running model 7\n",
      "2491 records\n",
      "Running model 8\n",
      "2491 records\n",
      "Running model 9\n",
      "2491 records\n",
      "Running model 10\n",
      "2491 records\n"
     ]
    }
   ],
   "source": [
    "import getpass\n",
    "import os\n",
    "from astronet import predict\n",
    "import tensorflow as tf\n",
    "\n",
    "\n",
    "def run_predictions(path):\n",
    "    predict.FLAGS = predict.parser.parse_args([\n",
    "      '--model_dir', path,\n",
    "      '--data_files', data_files,\n",
    "      '--output_file', '',\n",
    "    ])\n",
    "\n",
    "    return predict.predict()\n",
    "\n",
    "\n",
    "paths = load_ensemble(chkpt_root, nruns)\n",
    "ensemble_preds = []\n",
    "config = None\n",
    "for i, path in enumerate(paths):\n",
    "    print(f'Running model {i + 1}')\n",
    "    preds, config = run_predictions(path)\n",
    "    ensemble_preds.append(preds.set_index('astro_id'))\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "labels = ['disp_e', 'disp_n', 'disp_j', 'disp_s', 'disp_b']\n",
    "\n",
    "col_e = labels.index('disp_e')\n",
    "thresh = 0.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "agg_preds = {}\n",
    "\n",
    "for preds in ensemble_preds:\n",
    "    for ex_id in preds.index:\n",
    "        if ex_id not in agg_preds:\n",
    "            agg_preds[ex_id] = []\n",
    "\n",
    "        row = preds[preds.index == ex_id]\n",
    "        pred_v = row.values[0]\n",
    "        if len(row.values) > 1:\n",
    "            print(f'Warning: duplicate predictions for {ex_id}')\n",
    "        if pred_v[col_e] >= thresh:\n",
    "            agg_preds[ex_id].append('disp_e')\n",
    "        else:\n",
    "            masked_v = [v if i != col_e else 0 for i, v in enumerate(pred_v)]\n",
    "            agg_preds[ex_id].append(preds.columns[np.argmax(masked_v)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "final_preds = []\n",
    "for ex_id in list(agg_preds.keys()):\n",
    "    counts = {l: 0 for l in labels}\n",
    "    for e in agg_preds[ex_id]:\n",
    "        counts[e] += 1\n",
    "    maxcount = max(counts.values())\n",
    "    counts.update({\n",
    "        'astro_id': ex_id,\n",
    "        'maxcount': maxcount,\n",
    "    })\n",
    "    final_preds.append(counts)\n",
    "    \n",
    "final_preds = pd.DataFrame(final_preds).set_index('astro_id')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "tce_table = pd.read_csv(tces_file, header=0, low_memory=False)\n",
    "tce_table['astro_id'] = tce_table['Astro ID']\n",
    "tce_table = tce_table.set_index('astro_id')\n",
    "for l in labels:\n",
    "    tce_table[l] = tce_table[l[:-1] + l[-1].upper()]\n",
    "tce_labels = tce_table[labels + ['TIC ID']]\n",
    "\n",
    "pl = final_preds.join(tce_labels, on='astro_id', how='left', lsuffix='_p')\n",
    "\n",
    "pl.head()\n",
    "pd.set_option('display.max_columns', None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall: 0.9885057471264368\n",
      "Precision: 0.7371428571428571\n"
     ]
    }
   ],
   "source": [
    "ppos = (pl['disp_e_p'] > 0)\n",
    "pos = (pl['disp_e'] > 0)\n",
    "\n",
    "pneg = (pl['disp_e_p'] == 0)\n",
    "neg = (pl['disp_e'] == 0)\n",
    "\n",
    "print('Recall:', len(pl[ppos & pos]) / len(pl[pos]))\n",
    "print('Precision:', len(pl[ppos & pos]) / len(pl[ppos]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "334227600\n",
      "158159741\n",
      "141753278\n"
     ]
    }
   ],
   "source": [
    "for i in pl[pos & pneg]['TIC ID']:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "252588526\n",
      "164528404\n",
      "332870317\n",
      "185607431\n",
      "192591652\n",
      "431338538\n",
      "278910035\n",
      "16740282\n",
      "91987762\n",
      "237278147\n",
      "277848886\n",
      "154214348\n",
      "279064110\n",
      "136651206\n",
      "269291226\n",
      "468608862\n",
      "97487520\n",
      "82242456\n",
      "202685576\n",
      "405687343\n",
      "20999109\n",
      "233197293\n",
      "127846210\n",
      "298647682\n",
      "284266496\n",
      "56861756\n",
      "395164445\n",
      "257048642\n",
      "123489614\n",
      "186483050\n",
      "267924099\n",
      "359312744\n",
      "648359612\n",
      "188258751\n",
      "101496204\n",
      "122577745\n",
      "335588842\n",
      "74885707\n",
      "842068824\n",
      "356822358\n",
      "142615793\n",
      "18178958\n",
      "165500081\n",
      "408945155\n",
      "283330382\n",
      "219880693\n",
      "356776209\n",
      "278555119\n",
      "27896467\n",
      "375927073\n",
      "14209654\n",
      "417208086\n",
      "154271808\n",
      "159636125\n",
      "230197530\n",
      "320356995\n",
      "404934011\n",
      "419611478\n",
      "404851508\n",
      "407615704\n",
      "167039826\n",
      "201601338\n",
      "30275847\n",
      "404851966\n",
      "384341508\n",
      "278632192\n",
      "113496703\n",
      "309650507\n",
      "406971913\n",
      "276738707\n",
      "373919592\n",
      "40602499\n",
      "404851552\n",
      "319865847\n",
      "183978683\n",
      "177309966\n",
      "293527927\n",
      "363404187\n",
      "311103813\n",
      "299945796\n",
      "300153494\n",
      "21601170\n",
      "404733023\n",
      "406091286\n",
      "38679633\n",
      "379191982\n",
      "281578420\n",
      "384740598\n",
      "118398402\n",
      "410087746\n",
      "277045346\n",
      "199376584\n"
     ]
    }
   ],
   "source": [
    "for i in pl[neg & ppos]['TIC ID']:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>disp_e</th>\n",
       "      <th>disp_n</th>\n",
       "      <th>disp_j</th>\n",
       "      <th>disp_s</th>\n",
       "      <th>disp_b</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>astro_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0.051953</td>\n",
       "      <td>0.323670</td>\n",
       "      <td>0.900459</td>\n",
       "      <td>0.024662</td>\n",
       "      <td>0.093458</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0.032902</td>\n",
       "      <td>0.285644</td>\n",
       "      <td>0.936777</td>\n",
       "      <td>0.012140</td>\n",
       "      <td>0.101637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0.045555</td>\n",
       "      <td>0.283158</td>\n",
       "      <td>0.922972</td>\n",
       "      <td>0.010439</td>\n",
       "      <td>0.066126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0.003740</td>\n",
       "      <td>0.246955</td>\n",
       "      <td>0.987156</td>\n",
       "      <td>0.005800</td>\n",
       "      <td>0.063403</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0.010101</td>\n",
       "      <td>0.228590</td>\n",
       "      <td>0.981196</td>\n",
       "      <td>0.004547</td>\n",
       "      <td>0.060300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0.140511</td>\n",
       "      <td>0.261340</td>\n",
       "      <td>0.808425</td>\n",
       "      <td>0.007466</td>\n",
       "      <td>0.049215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0.014051</td>\n",
       "      <td>0.286197</td>\n",
       "      <td>0.961107</td>\n",
       "      <td>0.010092</td>\n",
       "      <td>0.058598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0.022418</td>\n",
       "      <td>0.273562</td>\n",
       "      <td>0.957806</td>\n",
       "      <td>0.009427</td>\n",
       "      <td>0.074139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0.114523</td>\n",
       "      <td>0.331246</td>\n",
       "      <td>0.778488</td>\n",
       "      <td>0.007870</td>\n",
       "      <td>0.100830</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0.023686</td>\n",
       "      <td>0.298635</td>\n",
       "      <td>0.949104</td>\n",
       "      <td>0.005927</td>\n",
       "      <td>0.115749</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            disp_e    disp_n    disp_j    disp_s    disp_b\n",
       "astro_id                                                  \n",
       "26515     0.051953  0.323670  0.900459  0.024662  0.093458\n",
       "26515     0.032902  0.285644  0.936777  0.012140  0.101637\n",
       "26515     0.045555  0.283158  0.922972  0.010439  0.066126\n",
       "26515     0.003740  0.246955  0.987156  0.005800  0.063403\n",
       "26515     0.010101  0.228590  0.981196  0.004547  0.060300\n",
       "26515     0.140511  0.261340  0.808425  0.007466  0.049215\n",
       "26515     0.014051  0.286197  0.961107  0.010092  0.058598\n",
       "26515     0.022418  0.273562  0.957806  0.009427  0.074139\n",
       "26515     0.114523  0.331246  0.778488  0.007870  0.100830\n",
       "26515     0.023686  0.298635  0.949104  0.005927  0.115749"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def compare(ensemble_preds, filter):\n",
    "    result = ensemble_preds[0][filter]\n",
    "    for preds in ensemble_preds[1:]:\n",
    "        result = result.append(preds[filter])\n",
    "    return result\n",
    "\n",
    "compare(ensemble_preds, preds.index == pl[pl['TIC ID'] == 1254504863].index.values[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>disp_e_p</th>\n",
       "      <th>disp_n_p</th>\n",
       "      <th>disp_j_p</th>\n",
       "      <th>disp_s_p</th>\n",
       "      <th>disp_b_p</th>\n",
       "      <th>maxcount</th>\n",
       "      <th>disp_e</th>\n",
       "      <th>disp_n</th>\n",
       "      <th>disp_j</th>\n",
       "      <th>disp_s</th>\n",
       "      <th>disp_b</th>\n",
       "      <th>TIC ID</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>astro_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>26515</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1254504863</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          disp_e_p  disp_n_p  disp_j_p  disp_s_p  disp_b_p  maxcount  disp_e  \\\n",
       "astro_id                                                                       \n",
       "26515            0         0        10         0         0        10       0   \n",
       "\n",
       "          disp_n  disp_j  disp_s  disp_b      TIC ID  \n",
       "astro_id                                              \n",
       "26515          0       5       0       2  1254504863  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pl[pl.index == pl[pl['TIC ID'] == 1254504863].index.values[0]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PR curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "ids = set(ensemble_preds[0].index.values)\n",
    "\n",
    "index = {v: i for i, v in enumerate(ids)}\n",
    "\n",
    "pred_es = np.zeros([len(ensemble_preds), len(index)])\n",
    "for i, preds in enumerate(ensemble_preds):\n",
    "    for row in preds.iterrows():\n",
    "        ex_id, pred_e = row[0], row[1][col_e]\n",
    "        pred_es[i][index[ex_id]] = pred_e\n",
    "\n",
    "lbl_es = np.zeros([len(index)], dtype=np.bool)\n",
    "for row in tce_labels.iterrows():\n",
    "    ex_id, lbl_e = row[0], row[1]['disp_e']\n",
    "    lbl_es[index[ex_id]] = (lbl_e > 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_cond_pos = int(np.sum(lbl_es))\n",
    "\n",
    "def pr_at_th(th):\n",
    "    pred_pos = np.any(pred_es >= th, axis=0)\n",
    "    true_pos = pred_pos & lbl_es\n",
    "    num_pred_pos = int(np.sum(pred_pos))\n",
    "    num_true_pos = int(np.sum(true_pos))\n",
    "    if num_pred_pos == 0:\n",
    "        return 1.0, 0.0\n",
    "    return float(num_true_pos) / float(num_pred_pos), float(num_true_pos) / float(num_cond_pos)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.9718972231607645, max R: 1.0, max P: 1.0\n",
      "100% recall at: 41%, threshold: 0.013500000000054635\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABD0AAAKuCAYAAACi1mevAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAewgAAHsIBbtB1PgAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd5xcV33///eZPrNFWjXLklbNkqxuWXKTKwRDAAOxCXwpSeiEJD8IiSEhDsTGQAgQiCGUQOgtpgQIEIcEh4AbBhdJlmxZVpdXvWt3p5fz+2Nmd2d2Z6v27p299/V8PPaxM3PP3PuZO29dzXz2FmOtFQAAAAAAgNcE3C4AAAAAAADACTQ9AAAAAACAJ9H0AAAAAAAAnkTTAwAAAAAAeBJNDwAAAAAA4Ek0PQAAAAAAgCfR9AAAAAAAAJ5E0wMAAAAAAHgSTQ8AAAAAAOBJND0AAAAAAIAn0fQAAAAAAACeRNMDAAAAAAB4Ek0PAAAAAADgSTQ9AAAAAACAJ9H0AAAAAAAAnkTTAwAAAAAAeBJNDwAAAAAA4Ek0PQAAAAAAgCfR9AAAAAAAAJ5E0wMAAAAAAHiSb5sexphZxpiXGGM+YIz5mTHmpDHGVn6+5tAyX2OM+bkx5qgxJmOMOWCM+ZYxZqMTywMAAAAAwM+MtdbtGlxhjBnqhX/dWvuGcVxWXNK/S3rxIENKkj5grb1zvJYJAAAAAIDf+XZPj36elfRzB+f/FfU1PH4p6WZJV0h6s6Q9Kr8P7zfG/LGDNQAAAAAA4Ct+3tPjTkmPSnrUWnvMGLNQ0r7K5HHb08MY8zuSflG5+1NJt1hri1XTZ0h6XNJ8SWclLbbWnhmPZQMAAAAA4Ge+3dPDWnuHtfY/rbXHHF7Uuyu/C5L+rLrhUanjpKT3VO5OlfQWh+sBAAAAAMAXfNv0mAjGmBZJz6vc/V9r7cFBhv5QUmfl9i2OFwYAAAAAgA/Q9HDW5ZIildv3DTbIWpuT9Jue5xhjwk4XBgAAAACA14XcLsDjVlbd3jHM2B2SXqDye7JU0vbhZn7nnXdGJa2RNEvSKUnFoZ+ho8PNEwAAAACAIQQlzazc3nbHHXdk3SxmODQ9nDWv6vZgh7b06Ki63a4RND1Ubng8OtqiAAAAAAAYB5dLesztIobC4S3Oaqm63T3M2GTV7WYHagEAAAAAwFfY08NZsarbuWHGVu8SFB/h/E/03Gjf8Dv6+IMnR1oXAGASCwWMmqJBNUWDao4E1RQNqTkSUks8rNZERIlQQLGQ1BQJqikSVHO0PG3GlGY1RYNSIatQwNTMM5FIKBAIKJPJqFAo1EwLh8OKRqMqFArKZDI10wKBgBKJhCQpmUzKWlszPR6PKxgMKpvNKp/P176OUEixWEzFYlHpdLpmmjFGTU1NkqRUKqVSqVQzPRaLKRQKKZfLKZer/S+2Z76lUkmpVGrA+mtqapIxRul0WsVi7ZGh0WhU4XBY+Xxe2Wzt3rrBYFDxeFzWWiWTSfU31DqMRCKKRCLntQ6Hem/OZx0O9d4Mtg6bm8t/n6leh9ZaWUmRSFTBnvcmm1NJ5cetlQImoGgsppK1SiZTslaVaVYlW36tMlImk1WhWOydZ8lahUNhBUNhFQp5ZbI59aymkrUyxpTnW5JS6VTv82SlkpUi0ahkjHK5nPKFomQlK1uuKRRUKBRWoVBUNpfrXf+lyvyj0ahKVspkMiqVbG+9VlIoHJEJGBXyBeUKhd6arLUygYBCwbCKtlReD5VlqrIuwpGIrLXK5fMqlkrldVEpOhAKyZiAioWi8oVCeZmVeo0JKBAMyZZKyubzldfSU69VMFT+eJ/PF1W0pco6KC85EAjKGKlYsipU6rU9dRmjQCAkK6towKq9La72tpjmt8U1vSmspqYmthFiG9FjLNuIHj3rsN57Mx7rsN57U70Ou7sH/i16JOuw3ntTvQ7rvTcjWYf13hupbx3We2+GWofnk++h1mHPeyNJR48e1d13390z6YQaHE0PZ1X/q4gMOqosWnV7YOrr603pioVz9VpNH2ldwKSSLxR09uwZTZ3apnCIzRbGn5WUyhXUmSmoM51XV6agzkzldzqvbKE07DwmVEnqTEtKW5WviF4Y5gkDJSJBtcbCaomF1Bqv/K7cb4mF1Rqv/I6F1Bqzao0XyvebEmqJhZSIBGVMbeOktbV1RMvu+YJbsrb8ZcxKkURL5X55erFkla3cVrz85bBUKo8tWat00coWrEo2qlIgolKpb36lrFTKFFUqWZVsrO/xnjFdWVkrFUtSyQb6lmmtSjYrazO944vWVtWbV6mUrqpdlWX0TE9V7le+ZPbOU72vs1SylXn21Vss9ayTevPsV3v1Y7bvecVS9f3yl9rq9Vws1S6z/rwHzqNUVWvPl+NS+Rt47xfpnvHwmjO9t5qjIV00s0kXzWrWRTPLP0tmNWvB9ITCwZHvOD7SbUQ9bW1tjsx36tSp4z7fVCqlkydPasmSJb1ftMdjvsM9d7j5TqZ1KElTpkxxZL7nsw7HOt/hTLb3pp/hzivpOr49OKur6vZwh6w0Vd0e7lCYARZMi+l9qxeP9mnApNDV1aVNm85o/fpFamlpGf4JwDjLForqyhQqP3l1piu/qxojnf0aJdWNk65MvuG+FKZyRaVyRR3tHH5sPcGAUUsspFgoWPcLuK1qDNQ2DmzvX8MBTA7d2YKeOHhOTxw8V/N4KGA0f3qitwlSboiUmyOtMf9ejLBYLOrMmTMD/ooOwB00PZxVffLSeRr6BC/tVbc7Bh0FAJhw0VBQ0eagZjRHhx9ch7VWyVxxyIbJyc6k9h88qmhLm9IFVcb0NVnS+cb68FwsWZ1N5SXlhx0LwJsKJau9J5LaeyKpe7cfq5k2qyWq1ni4Zm+hnj2Lavf2qtrTql/DdMBzrTRnSkyvvXK+/uSGixQaxV4mAPyLpoezqq/AsnyYsT3TC5J2OVMOAMANxhg1R0NqjoZ04SB765b3aDqr9etX1N2jKV8s1d3TpPqQnL69SypjstVjCyo22u4mwDgyRjKSAsaUbxsjU3k8ULkdqAwykgIBM+x40zttkHlUpgcqh3oF6ozvncdQy6o3j2HGG9Ov/qraAkOMr1db9XhJOt6V1e7j3dp7IjnmhuvxrqyOd43/VSwPn8vo4z/fqYd2n9KnXrNOs1piwz8JgK/R9HDWoyqfwDQi6QZJH6k3yBgTkXRVz3OstfzZDABQIxwMaFpTRNOahjtFVH3WWqXzxZomSP3DcWobJdX3k7nG2tukR8+XtmDVF7iAKX+p7b1tTOV+z/Ty2GDA1HzprJlHQJX7I5tHoPLFMlh5rqmMCfZ+8SyPCQb6zXOYWnvnWRlnjCr3a19v33xH8vr7XkNtrX2vo2+eA79g93xB7/+lveeL82DjU6mknnrySa1Zs0atLc0yUs2X9Jov6IM0Fvo3IHrGY/yVSlZHOjPac7xbu493a8+Jnp+kTjjQ0BiNh/ee0k3//KD+9sXL1RIN9+4pUuw9x035fDkDHyvvMbJgWkLPuXgme4sAPkDTw0HW2i5jzC8kvUjSjcaYedbag3WGvlxSz5lkfjSWZUUiY/sQDEwG0WhUS5YsUTQ6tkMLgMnA6ZwbY5SIhJSIhDR7ytj+MlooltSdLe9Rcq7SKMkWigMbB4HqL84DGwm9X7b7ffGuebx/I6GmCVDboOAL7+SRaw6pec0yzZzZymeXSSAQMJo7Na65U+O6ftnMmmnn0vlyA+R4uQnSc/vA6dSE7VV2oiurv/zuE2N+/is2zNPHX3nJOFZUxucWoLHQ9DgPxpg3SPpq5e6d1tr31xn2cZWbHiFJnzXGvNxa2/unMmPMDEkfrdw9K+lLY6mFDw7wskgkorlz57pdBuCoyZDzUDCgqYmIpiYiNSeiAkZqMuQcIzMlHtb6+W1aP7/2qhO5QknPni6f5yNftDV7Dg23Z1GgX8O0f6PzWGdGt/1wm46cywxS1ej8eMshfejm1YqFg+Myvx7kHGgsvm16GGOulbSk6qEZVbeXVBoavay1XxvLcqy1/2eM+Y6kV0t6maR7jTGflHRY0hpJ75U0vzL8PdbaM/XnNLT+130GvCSfz+v06dOaNm2awmH/ng0e3kbO4Qfk3PsioYCWzGrRklnjf7W1FRe26p4/v07v/M5mPbDr5HnPL1+0uvGf7tP05qies2ym/vj6xWqKnv/XI3IONBbfNj0kvUXS6weZdk3lp9rXzmNZb1L58JUXS3pu5adaSdIHrbX/OtYFZLPuHlcJOCmTyWjHjh1av349Hx7gWeQcfkDOcb6mNUX0tTdeoW88vF8/2nxIp7pzveffCQTKe4/0nN8m2O/xE91ZHTiVqpnfwTNpHTyT1hMdZ/WTJw7r06+5VKvnDnLG6REi50Bj8XPTY8JYa9OSbjLGvFbSGyRdImmqpGOSHpD0GWvtw+5VCAAAAEwOwYDRG69ZpDdes2hUz+vK5LX2zp/LDnLKkX0nk7rlcw/pL25cptVzp6hQLKlQsioUrQqlkgrF8olQ86VS+XfRqlgqVX5bJSJBPX/lBZrGUedAQ/Ft08Na+waVGxDnM4+vaRR7gFhr/03Sv53PMgEAAACMXkssrJvXzdWPNh8adEy+aPWP//PMmJfx6f/bre+/+dIxPx/A+PNt0wMAAACAv/zjK9bq5evn6uCZtEKVq0R94zcH9ETH2XGZ/7l0Xg/uOaMFpfJlwkvpfO8eI/liqXevkdlT4moeh/OHABge/9I8Ihgc37NOA40kGAyqpaWFnMPTyDn8gJzDbaFgQNctrb387svWzdFd9+7Uv9y3Z9BDX0bjAz/bVb7xPw8NOiYcNLrl0rl6700rNSXOeT8AJ9H08Ih4PO52CYBjEomE1q9f73YZgKPIOfyAnKMRhYMB/fULl+vapTP0hfv26qnDnQoFjEJBU/kd6L0fDAQUDpRPlhoOBhQMGN2388Sol5kvWn3vsYO6f+dJfeT31+g5F89y4JUBkGh6AAAAAICuvmiGrr5oxqif967vPaEfbDo4pmUe7czoDV99VK+6rF3vfckKtcbY6wMYbwG3C8D46O7udrsEwDFdXV2677771NXV5XYpgGPIOfyAnMOL3nLdIrUlzq9Z8d3HOvS7d92v+8ew1wiAobGnBwAAAACM0YoLW/Wbv32edh0r/xEyl0lr546ntXbNKrVNaVEoEFA42HeYzMnurG774TY9sOtkzXyOnMvodV95RK/cME8r57QqVyipaK3WtU/VxsXTZYxx4+UBkx5NDwAAAAA4D9FQUKvnTpEkdXUF1HUwoPa2uFpaBp53b15bQt940xW6+5EO/f0925XMFWumf//xg9Ljtc+5+qLp+sjL12r+9IRjrwHwKpoeAAAAADCBjDF67ZXzdf2yGXrPD7bqod2nhhz/6z2n9IJP3qd3v+BiXb5wmnLFknKF8k+2UFS2crv68fZpCd244gJFQpzRAP5G0wMAAAAAXDCvLaFvvflKffu3z+rD//W0Uv32+qiWyZf0oXueHtX8X3rJHH36NZeeb5nApEbTwyMSCXZ1g3c1NTXpiiuuUDQadbsUwDHkHH5AzuEHo825MUZ/eNUC3bBspr7y0D49dahToWD5krjPHO3S0c7MmGv56ROH9fqNCxQIGGXz5T1Bsvli5XffniHZQrHyu9T7O1sYbFq955cUDBjduOIC3fmyVexdgoZC08MjAgE2LPCuQCCgeHzgMbGAl5Bz+AE5hx+MNeft0xK646Wrah7rzhb0sf/eoW88fGDM9bzi8w+P+bmjdfcjz2r13Fb9wZULBh1jrZUkTsyKCUPTwyMymYxaW1vdLgNwRDqd1v79+7Vw4UI+LMOzyDn8gJzDD8Yz583RkD7we6v1krVz9ImfP6PNz56VMVIkFFA0FFAkGFA0HFQkGFAkFNC5dF7Pnk6N0ysZm/f+6En9++MHlc3Xnm8kW3X+kWmJiP7suUv05msXuVor/IGmh0cUCgW3SwAcUygUdPz4cc2bN8/tUgDHkHP4ATmHHziR8ysWTdN337Zx+GUXS7r0A/eqK+vud4PNz54dcvqpZE4f/M/tetHq2ZozlQYonEXTAwAAAAA8IBQM6MMvX6M7fvKUTidz5ccCRpFQoG/vkFBA0VCwspdI7d4i0XBA0XqP1zw/WDOvu+7dqR1Hu8ZU754T3TQ94DiaHgAAAADgES+9ZI5esvZCpfNFRUNBBQPOnjtjdmtMr/zCw8oVSo4uBxgrmh4AAAAA4CHGGCUiE/NV75L2qfrp26/VA7tOyNq+841Ew7V7lERDQb3tm4/pTCrf+9y77t2przy4T6vnTtHbf2eJoqHghNQMf6Hp4RHhcNjtEgDHRCIRLViwQJFIxO1SAMeQc/gBOYcf+DHnF89u0cWzW4YdFw7WXnFyU+XcH7985oS6s4UBV6+px1qrXLGkTL6klmhIAYf3ZMHkR9PDI7jePbwsGo1q4cKFbpcBOIqcww/IOfyAnA8uFh58T46vPrRfxzuzyuSLSueLyuSLyuRLyhSKyuSKyhRKlceKKpWveqvWWEgfvHm1fm/d3Al6BZiMaHp4BFdvgZcVCgV1dnaqtbVVoRCbLXgTOYcfkHP4ATkf3ItWz9YX7t876PR7th0Z1fw6MwXd9sNtun7pTAUCRlPi7P2OgQLDD8FkkMlk3C4BcEw6nda2bduUTqfdLgVwDDmHH5Bz+AE5H9xfv3C5Pv7KS/TW6xbp4guGPxxmJFK5oi794L265M6f6wV33ad7th6RtXZc5g1voOkBAAAAAHBcMGD0ig3z9N6bVuo7f3zVuO+ZsfNYt/6/f9ukWz73az26//S4zhuTF/tbAQAAAAAmVFtTRD/40436waZD6s4UFI8EFQsFFA0HFQsHFQ8HFQsHFKv5HVTQGP3eZx8act5bOs7qlZ9/WH/2nIv01y9cPkGvCI2KpgcAAAAAYMItmdWi94yhKXHbi5brH362Y9hxn/vVHl21eLqaYyGlc0Wlc0Wl8kW1REO6YtE0NUX5OuwHvMseEQhwpBK8KxAIKBaLkXN4GjmHH5Bz+AE5d97bbrhIr7ysXYfPphWPlPcK2fzsWf3j/+zQ/lOpmrGv+8ojdeex8sJW/fDPrh7yijLwBpoeHpFIJNwuAXBMU1OTrrzySrfLABxFzuEH5Bx+QM4nxrSmiKY1RXrvz5ka1/NXXqBl7/vZiJ6//UinHtt/RtcuneFUiWgQtB8BAAAAAJNeJBQY1VVhzqZzDlaDRsGeHh6RTCbV2trqdhmAI7q7u7V161atXbtWzc3NbpcDOIKcww/IOfyAnLvr9peu1J/fvVmnkuWGhjFSPBxUIhLU2VRehVLf5Wzve+aEDp5JK5UtKJUrKpkrKhoK6Ka1F+ryhdPcegkYZzQ9PIJrUcPLrLXK5/PkHJ5GzuEH5Bx+QM7ddc2SGXrsfTfqbCqveCSoaCggY4wk6QV33aedx7p7x37/8YN15/Ht3x7Qf77jOl08e+R7jaBx0fQAAAAAAHiGMUZtVef76H1cZkTPzxetfveT9+uSeVOUyhUre4EUJEnPW36B/v6W1ZwAdRKh6QEAAAAA8Lw186bomWNdIx7/xMFzAx77waaDWjtvil5/9cJxrAxOoukBAAAAAPC8v7tppUolqycPn1MkFFAiElIiUj7fx39tOzri+ewcReME7qPp4RHxeNztEgDHJBIJrVu3jkszw9PIOfyAnMMPyHnjmpII659eta7utJ9tO6I//famEc3nbCqvLR1nNaslqjlT+R7W6Gh6eEQwyDFl8K5gMKgpU6a4XQbgKHIOPyDn8ANyPjm9aM2FuvutV+mRfacVCholIkE1RUJKRIP6weMH9ctnTvSOvWfbEd2z7Ygk6a3XLdJ7b1rpVtkYAZoeHpHNZt0uAXBMNptVR0eH2tvbFY1G3S4HcAQ5hx+Qc/gBOZ+8Nl40XRsvmj7g8Uf3nR70OV98YJ/ikZCaIkFdtnCaNixoc7JEjEHA7QIwPvL5vNslAI7J5XI6dOiQcrmc26UAjiHn8ANyDj8g597TPm3oQ5X++Re79A8/26FXfP7X+u8nR35uEEwMmh4AAAAAAAzilRvadcXCacOOs1b68ZZDE1ARRoPDWwAAAAAAGMSURFjf+5ONOpfKS0Z61Rce1o6j9a/gkswVJ7g6DIc9PQAAAAAAGMaURFhT4mF97g/W63eWz9KSWc2a3RqrGfP4/tN67sd/pZd95kHds/WIS5WiGk0PjwiF2GkH3hUOhzVnzhyFw2G3SwEcQ87hB+QcfkDOvW/xzGZ95Q2X639vvUFvvnZRzbRkrqh9J5PaevCc3n73Jp3o4oITbqPp4RGxWGz4QcAkFYvFtHTpUnIOTyPn8ANyDj8g5/7SFB38j8/WStuPdE5gNaiHpodHFIscOwbvKhaL6urqIufwNHIOPyDn8ANy7i/PuXim2hKD79VjrZ3AalAPTQ+PSKfTbpcAOCaVSmnTpk1KpVJulwI4hpzDD8g5/ICc+8ucqXH99B3X6oM3r9YdL12p1hinHWg0vCMAAAAAAIzRvLaE/uiqBZKkf71/rzozhd5p92w9oi0dZ7Xiwla9YOUFMsa4VaZv0fQAAAAAAMAB33/8YO/t2160XG+74SIXq/EnDm8BAAAAAGAcDLUfx0+3Hp6wOtCHpodHsJsUvMwYo2AwSM7haeQcfkDO4Qfk3N/Wzps66LRUjpPbuoHDWzyiqanJ7RIAxzQ3N+vaa691uwzAUeQcfkDO4Qfk3N8+dMtqhYJGu451K1Mo6sApTmjrNpoeAAAAAACMgxnNUX3mteslST/bdkR/+u1NLlcEDm/xCC6JBS9LJpN69NFHlUwm3S4FcAw5hx+Qc/gBOQcaC00PjyiVSm6XADimVCoplUqRc3gaOYcfkHP4ATkHGgtNDwAAAAAA4Ek0PQAAAAAAgCfR9AAAAAAAAJ5E08MjYrGY2yUAjonH41q1apXi8bjbpQCOIefwA3IOPyDnQGPhkrUeEQrxVsK7QqGQZsyY4XYZgKPIOfyAnMMPyDkGk82X9PiBMwoHjZbPblUkxD4IE4G17BG5XM7tEgDH5HI5Pfvss+QcnkbO4QfkHH5AzjGYQ2fT+v1/+bVe9pmH9MrP/1qpXMHtknyBpodHsFGFl2WzWe3bt0/ZbNbtUgDHkHP4ATmHH5BzjMQTB89p5e3/o1f8y6916/e26HhXxu2SPItjIgAAAAAAGGfz2hLDjnnswBk9duCMjnVm9O23XDUBVfkPe3oAAAAAADDOVs1p1asuax/R2E0HzjpcjX+xpwcAAAAAAOMsEDD66CvW6r0vWaFsvqQfbDqoj/xsR92xRWsnuDr/oOnhEVy9BV7WcxZ0cg4vI+fwA3IOPyDn6K81FpZi0tuuX6wZzVFt6Tij7kxB/7HlsNul+QL/Ej0iFou5XQLgmJ7r3QNeRs7hB+QcfkDOMRhjjF6xYZ5esWGenjx0jqbHBOGcHh5RKpXcLgFwTKlUUjabJefwNHIOPyDn8ANyDjQWmh4ekUql3C4BcEwymdRvfvMbJZNJt0sBHEPO4QfkHH5AzoHGwuEtAAAAAAC4qFAs6c6fPiVrpeevvEDXLJnhdkmeQdMDAAAAAAAXlaz01Yf2S5K+8fB+ff9PNmrDgmmu1uQVHN4CAAAAAMAEMmbwaSUr3bfz5MQV43E0PQAAAAAAmEBLZjWrJTr4gRe5AifCHS8c3uIRTU1NbpcAOKa5uVnXXXedzFAtcWCSI+fwA3IOPyDnGIloKKivvekK/cuvdutMKq+O0ykd78rWjLHWKpkr6kwyp9PJnLKFki6e3aIp8bBLVU9OND08go0qvMwYQ8bheeQcfkDO4QfkHCO1YUGbvvT6yyVJt353i364+VDvtK/9ep++8tC+AXt8tCXC+s4fb9TFs1smtNbJjMNbPCKdTrtdAuCYVCqlLVu2cGlmeBo5hx+Qc/gBOcd4yORLdQ9xOZPK6+5HnnWhosmLpodHFItFt0sAHFMsFnXu3DlyDk8j5/ADcg4/IOcYi+bYyA/CONGdHX4QetH0AAAAAADARS+7ZI4iIb6eO4FzegAAAAAA4KLLFk7TPe+4Vo/sP61IMKDpzRG1JSKa3hTVN3+zX198YJ/bJU5aND0AAAAAAHDZ0gtatPSCgScojYeDLlTjHew/4xHRaNTtEgDHxGIxLVu2TLFYzO1SAMeQc/gBOYcfkHOgsbCnh0eEw1yrGd4VDod14YUXul0G4ChyDj8g5/ADcg40Fvb08Ih8Pu92CYBj8vm8jhw5Qs7haeQcfkDO4QfkHGgsND08IpvlskXwrkwmo507dyqTybhdCuAYcg4/IOfwA3IONBaaHgAAAAAAwJNoegAAAAAAAE+i6QEAAAAAADyJpodHBINcuxneFQwGNWXKFHIOTyPn8ANyDj8g50Bj4ZK1HhGPx90uAXBMIpHQunXr3C4DcBQ5hx+Qc/gBOcdEsNZKkowxLlfS+NjTwyN6Qg94kbVWpVKJnMPTyDn8gJzDD8g5nHbvU8e07H0/02Uf+l998zcH3C6n4dH08IhkMul2CYBjuru79cADD6i7u9vtUgDHkHP4ATmHH5BzOC1XLClftDqVzOn2Hz+pM8mc2yU1NJoeAAAAAAA0qKbo4GelsFbae5I/gA+FpgcAAAAAAA3q+SsvUEts+NNxWmt1LpXX7uNdevZUikOsKjiRKQAAAAAADWrxzGb95zuu1YO7TypojO74yVPKFkq90//q359QNl/Sia6scsW+x5978Uz96+suUzjo730d/P3qAQAAAABocAumN+kPrlygV18xf0ATY++JpA6dTdc0PCTpl8+c0KYDZyayzIZE00OSMWaBMeYTxpgdxpikMea0MeZRY8xfGWMS47SMhcaYjxpjHjfGnDXG5CvL+bUx5nZjzKzzmX8iMS5lAg2pqalJV111lZqamtwuBXAMOYcfkHP4ATmH06KhkX+NP9qZcbCSycH3TQ9jzEslbZV0q6SLJSUktUm6TNLHJG02xiw5z2X8kaTtkv5a0npJU1Q+tKhN0kZJd0p62hjz/LEuIxDw/VsJDwsEAopGo+QcnkbO4QfkHH5AzuG05604r7+X+46vz+lhjLlU0nclxSV1S/oHSaCcFQoAACAASURBVL+s3H+1pLdKWibpHmPMZdbarjEs4xpJX1O5wVSS9HVJP5Z0WNJ8Sa+X9FJJ0yT92Biz2lq7d7TLyWQyam1tHe3TgEkhnU5r7969Wrx4seLxuNvlAI4g5/ADcg4/IOdw2oduXqPls1v17OmU2hIRzWyJakZz+fe7vvcEV3Ppx9dND0mfUrnBUZD0Amvtw1XT/s8Ys0vlvT2WSXqXpPePYRm3qW+PmndYaz9XNe1RST8wxnxC5T1N4pXfbx/tQgqFwhhKAyaHQqGgkydPav78+W6XAjiGnMMPyDn8gJzDaZFQQG+6dtGg01DLt2vEGHOFpOsqd7/cr+HR4xOSnq7cfqcxJjyGRV1d+X2qX8Oj2geqbm8cwzIAAAAAAEA/vm16SLq56vZX6w2w1pYkfaNyd6qk545hOZHK732DDbDWnpN0st94AAAAAABwHvzc9Li28jsp6fEhxt1XdfuaMSznmcrv+vsfSTLGtEqa0W88AAAAAAA4D34+p8eKyu/d1tqhToixo85zRuPzkv5V0nRjzJ9Yaz9fZ8zf9Rs/arlcTp2dnUOO4USnmKyi0agWLVqkaDTqdimAY8g5/ICcww/IOdBYfNn0MMbE1LdnxcGhxlprzxhjkpKaJLWPYXFfUXmvktdJ+qwxZoOkn0g6ovLVW/5IfYfa/L219n/HsAx9/etfH3bMrbfe2nu7paVFkpRKpVQsFmvGxWIxhcNh5XI5ZbPZmmnBYFCJRELWWnV3dw9YRlNTkwKBgNLp9ICTq0ajUUUiEeXzeWUytdeLDgQCvdcy7+oaeJGcRCKhYDCoTCajfD5fMy0SiSgajapQKCidTtdMM8aoublZktTd3S1rbc30eDyuUCikbDarXC5XMy0cDisWi6lYLCqVSg2oqWcdJpNJlUqlmmlDrcNQKKR4PK5SqaRkcuCZlZubm2WMqfveDLUOe94bqf46HOq9GWodVr839dZhz3sz2nVY/d7UW4c9703POmxra1M2m1U2mz2vddjz3gy1Ds8n3+ezDofK9/msw3rvzXDrkG1E2URvI9ra2nrXN9uI0W0jqrGNKGvUbcT8+fNlrR11DtlGlPE5oqyRtxHhcLjmc8tI1iHbiDI+R/QZ6zaifw2ZTKbmNY/HNqLee9PIfNn0kNRSdXsk71hP06N5tAuy1hYlvd4Y81NJfyvpLZWfar+U9OGxNjxGatOmTb23b7jhBknSjh07BvzDX758uS644AKdOHFCu3fvrpnW1tamtWvXqlgs1syvx8aNGxWJRLRnzx6dOnWqZtrixYvV3t6us2fPavv27TXTmpubtWHDBknS5s2bB/xjveyyy9TU1KQDBw7o6NGjNdPa29u1ePFidXd364knnqiZFolEtHFj+dyw27ZtG7CxueSSSzR16lQdOnRIHR0dNdNmz56tiy++WJlMZsBrNcbo+uuvl1Reh/3/4a9cuVIzZ87UsWPHtHdv7RWIp0+frtWrV6tQKNRdh9dcc41CoZB2796tM2fO1ExbsmSJ5s6dq9OnT2vHjh0101paWrR+/XpJqjvfK664QvF4XPv379fx48drpi1YsEALFy5UZ2entm3bVjMtFovpyiuvlCRt3bp1wH8E69at05QpU9TR0aFDhw7VTJszZ46WLl2qVCo1oKZgMKhrry0fZbZ9+/YBG/tVq1ZpxowZOnr0qPbtqz0lzowZM7Rq1Srl8/m6r/W6666TMUY7d+7UuXPnaqYtW7ZMF154oU6ePKmdO3fWTJsyZYrWrVsna23d+V511VWKRqPau3evTp48WTNt0aJFmj9/vs6ePaunnnqqZloikdDll18uSdqyZcuA/2DWr1+vlpYWdXR06PDhwzXT5s6dqyVLlqi7u1tbtmypmRYOh3X11eVzJT/55JMD/nNas2aNpk2bpiNHjujAgQM102bNmqUVK1Yom83Wfa1sI8rc2Eb0rEO2EWwjenhpGzF16lTNnTtXzc3NbCP4HCHJm9uIwebLNqKMzxFlTm0j+jdB9u3bp03Zvr/zj8c2ov+/80Zn+r/hfmCMaZf0bOXuN621rxtm/LMq7+Wxx1q7ZAzLWyHpo5JepPqNpoyk/5D0bmvtoTrT67rzzjvnSeqQpFtuuUUzZszonRYKhRSLxVQqlXr/E+jpFlbfpvvKX2ikxv8LzZkzZ7Rjxw4tX75ciUSCv+KOch3yF5rJsY1IpVLasWNH7wd1thGN+1dcthFj30ZkMhlt375dl156qYwxA+bLNqKMzxFlk3Ub0dnZqc2bN/d+bhnJOmQbUcbniD5j3Ua84kub9MyxvnX30ZuX68WrZvXeH49txOHDh/XFL36xZ1L7HXfcMeTRE27za9NjpqSeFvV3rbWvHmb8MUmzJD1prV0zymVdJ+mnkqZIOiDpfZLulXRa0gWSXibpg5KmSTos6QXW2qfqz61WddPjrW99q+bMmTOa0oBJo6urS5s2ber9SwbgReQcfkDO4QfkHG564Sfv146jfY2dT716nX5v3dxxXUZnZ6fuuuuunrsN3/Tw6+Et1e29kRyy0lT5PaqDl4wxUUl3q9zwOCrpKmtt9f5SByV9zhhzn6THJM2R9HVJl41mOQAAAAAAYCBfXrLWWpuR1HMQ2Lyhxhpj2tTX9OgYamwdL5TU01b7dL+GR3U9T0n6VuXuBmPMJaNcDgAAAAAANW7/8VNaeft/68WfekDPHB14aI8f+LLpUdFzdpslxpih9nhZXnX76VEuo/oStwPPxFPr8UGWOSKBgJ/fSnhdIBBQIpEg5/A0cg4/IOfwA3KORnIunVcqV9T2I5264ydPul2OK/x6eIskPSjpOpX34tgg6beDjLuh6vZDo1xG9dl1hlvX4UGeNyLVJ0kCvKapqan3rOWAV5Fz+AE5hx+Qc7gpHgkOOm3Xscl1qdnx4uf2439U3X5jvQHGmICkniu7nFX50rKjUX19rOuGGVvdXNk36CgAAAAAAOp4yVoubtGfb5se1tpHJD1QuftmY8zGOsPepb5DVD5lra25fpEx5jnGGFv5+Vqd5/9CUs/1h/7UGFP3yi/GmBdJuqVy95CkLfXGDaXepaIAr+ju7taDDz5Y99JlgFeQc/gBOYcfkHO46U3XLNS//tEG/eWNy/S6jQvcLqch+LbpUfFOSWmVDz35uTHmNmPMVcaY5xpjviDpY5VxOyV9YrQzt9aelfSRyt0WSb82xny4Mv91xpjfNcZ8TtJP1Pde/I21tlRvfsMsa7RPASYNa62KxSI5h6eRc/gBOYcfkHO4yRijF6yarXfeuFQvXD3b7XIagp/P6SFr7WZjzKtUvnJKq6QP1xm2U9JN1tqxnur2Q5KmqdxgaZZ0W+Wnv7ykv7XWfqvONAAAAAAAMEp+39ND1tqfSlor6S6VGxwplc/f8Zik90i61Fq7+zzmb621fynpckmfl/SkpC5JRUnnVL5qyz9JWm2t/fh5vBQAAAAAAFDF13t69LDWHpB0a+VnNM/7lSQzwrGPq/aytAAAAAAAwEG+39PDK+LxuNslAI5JJBJav349l2aGp5Fz+AE5hx+Qc6CxsKeHRwSDg1+PGZjsgsGgWlpa3C4DcBQ5hx+Qc/gBOQcaC3t6eEQmk3G7BMAxmUxGu3btIufwNHIOPyDn8ANyjkaVK5T0kycO6z82H9KxTv/kk6aHRxQKBbdLAByTz+d1+PBh5fN5t0sBHEPO4QfkHH5AztGourIF/fndm/UX392im/75AR0+m3a7pAlB0wMAAAAAAB852Z3TL54+5nYZE4KmBwAAAAAAHtPeNvTJdDsz/jhagKYHAAAAAAAe0z4tobddv1gBU3/6F+7bo9V3/I+e94lf6bd7T01scROIpodHhMNht0sAHBOJRDR37lxFIhG3SwEcQ87hB+QcfkDO0Uhue/EKbf/AC7Xl9ufrxhWzaqZ1Zgrqzha050RSf/XvW2WtdalKZ3HJWo+IRqNulwA4JhqNasmSJW6XATiKnMMPyDn8gJyj0cTCwd6fwTx7OqVMvqR4ZPAxkxV7enhEsVh0uwTAMcViUefOnSPn8DRyDj8g5/ADco5G9cLVs90uwRU0PTwinfbH5YbgT6lUSlu2bFEqlXK7FMAx5Bx+QM7hB+Qcjeola+foq2+4XH/2nIv0tusXu13OhOHwFgAAAAAAfOC5y2fpuctnqeN0Sl+4f6/b5UwI9vQAAAAAAACeRNMDAAAAAAB4Ek0PjzBmkIsvAx5gjFE4HCbn8DRyDj8g5/ADcg40Fs7p4RFNTU1ulwA4prm5WVdffbXbZQCOIufwA3IOPyDnQGOh6QEAAAAAgM9t6Tgra61WzmnV1ETE7XLGDYe3eASXxIKXJZNJ/fa3v1UymXS7FMAx5Bx+QM7hB+Qck9VrvvgbvfZLv9WN/3Sf9pzodruccUPTwyNKpZLbJQCOKZVKymQy5ByeRs7hB+QcfkDOMdmd7M7ph5sOul3GuKHpAQAAAACAj0xNhBUKDH6y3dPJ3ARW4yyaHgAAAAAA+EhLLKw3X7vI7TImBCcyBQAAAADAZ/7mRcv1B1cu0JlUTt94+IB+4KFDWqqxp4dHxGIxt0sAHBOPx7VmzRrF43G3SwEcQ87hB+QcfkDOMVkYYzR/ekKXtE9VS8y7+0N495X5TCjEWwnvCoVCmjZtmttlAI4i5/ADcg4/IOdAY2FPD4/IZrNulwA4JpvNav/+/eQcnkbO4QfkHH5AzoHGQtPDI/L5vNslAI7J5XI6cOCAcjnvnEUa6I+cww/IOfyAnAONhaYHAAAAAADwJJoeAAAAAADAk2h6AAAAAAAAT6Lp4RFcvQVeFgqFNGvWLHIOTyPn8ANyDj8g50Bj4V+iR8RiMbdLABwTj8e1YsUKt8sAHEXO4QfkHH5AzoHGwp4eHlEqldwuAXBMqVRSOp0m5/A0cg4/IOfwA3IONBaaHh6RSqXcLgFwTDKZ1COPPKJkMul2KYBjyDn8gJzDD8g50FhoegAAAAAAAE+i6QEAAAAAADyJpgcAAAAAAPAkmh4AAAAAAMCTuGStRzQ3N7tdAuCYlpYW3XDDDW6XATiKnMMPyDn8gJwDjYU9PQAAAAAAgCfR9PCIdDrtdgmAY1KplDZt2sSlmeFp5Bx+QM7hB+QcaCw0PTyiWCy6XQLgmGKxqK6uLnIOTyPn8ANyDj8g50BjoekBAAAAAAA8iaYHAAAAAADwJJoeAAAAAADAk2h6eEQ0GnW7BMAxsVhMy5cvVywWc7sUwDHkHH5AzuEH5BxoLCG3C8D4CIfDbpcAOCYcDuuCCy5wuwzAUeQcfkDO4QfkHGgs7OnhEblczu0SAMfkcjkdOnSInMPTyDn8gJzDD8g50FhoengEG1V4WTab1e7du5XNZt0uBXAMOYcfkHP4ATkHGgtNDwAAAAAA4Ek0PQAAAAAAgCfR9AAAAAAAAJ7E1Vs8IhgMul0C4JhgMKi2tjZyDk8j5/ADcg4/IOfwgscPnNE77t6sllhIb7t+sRZMb3K7pDGj6eER8Xjc7RIAxyQSCa1du9btMgBHkXP4ATmHH5BzeMHOY93aeaxbkvSrHcf14Ht+R4GAcbmqseHwFo+w1rpdAuAYa60KhQI5h6eRc/gBOYcfkHN4zeFzGR04nXK7jDGj6eERyWTS7RIAx3R3d+uhhx5Sd3e326UAjiHn8ANyDj8g55iMVs1pHXJ6oViaoErGH4e3AAAAAADgYzdfOldPH+nS/+04pngkpKePdLpd0rih6QEAAAAAgI+FgwHd/tKVuv2lKyVJC//mHpcrGj8c3gIAAAAAADyJpgcAAAAAAPAkDm/xiEQi4XYJgGOampq0ceNGhUJssuBd5Bx+QM7hB+QcaCz8S/SIQICdduBdgUBAkUjE7TIAR5Fz+AE5hx+Qc6Cx8E3ZIzKZjNslAI5Jp9N68sknlU6n3S4FcAw5hx+Qc/gBOQcaC00PjygUCm6XADimUCjo1KlT5ByeRs7hB+QcfkDOgcZC0wMAAAAAAHgSTQ8AAAAAAOBJND0AAAAAAIAn0fTwCM4QDS+LRqNavHixotGo26UAjiHn8ANyDj8g50Bj4ZK1HkHTA14WiUTU3t7udhmAo8g5/ICcww/IOdBY2NPDI/L5vNslAI7J5/M6ceIEOYenkXP4ATmHH5BzoLHQ9PCIbDbrdgmAYzKZjLZv365MJuN2KYBjyDn8gJzDD8g50FhoegAAAAAAAE+i6QEAAAAAADyJpgcAAAAAAPAkmh4eEQjwVsK7AoGAmpubyTk8jZzDD8g5/ICcA42FS9Z6RCKRcLsEwDFNTU3asGGD22UAjiLn8ANyDj8g50Bjof0IAAAAAAA8iaaHR3R3d7tdAuCYrq4u3X///erq6nK7FMAx5Bx+QM7hB+QcXmQlZQtFt8sYEw5vATApWGvdLgFwHDmHH5Bz+AE5h9e87DMPKpMvaeWFrbrrlmVulzMq7OkBAAAAAAAGlcmXJEnbj3Tq27894HI1o0PTAwAAAAAA9IqGBm8VPHs6PYGVnD+aHgAAAAAAoNcLVs12u4Rxwzk9PCIej7tdAuCYRCKhyy67TLFYzO1SAMeQc/gBOYcfkHN4wcdfuVaXLWjT0c6M9hzv1s+3H3O7pDGj6eERwWDQ7RIAxwSDQTU1NbldBuAocg4/IOfwA3IOL4iGgnr91QslSV9+cN+kbnpweItHZDIZt0sAHJPJZPTMM8+Qc3gaOYcfkHP4ATkHGgtND48oFApulwA4Jp/P6+jRo8rn826XAjiGnMMPyDn8gJwDjYWmBwAAAAAA8CSaHgAAAAAAwJNoegAAAAAAAE+i6eER4XDY7RIAx0QiEbW3tysSibhdCuAYcg4/IOfwA3IONBZXLllrjJku6Y8kXS9pkaQWDd+AsdbaixyqZ4GkP5d0k6R2SVlJeyR9T9JnrbWpcVzWjZL+UNK1ki6UVJB0TNJWSb+Q9E1rbfdo5xuNRserRKDhRKNRLV682O0yAEeRc/gBOYcfkHOgsUx408MY83JJX5bU2vPQCJ9qHarnpZK+VVWPJCUkXVb5eYsx5iZr7e7zXE6bpK9K+r06k1slLZX0+5IelrRltPPn6i3wskKhoO7ubjU3NysUcqVXCziOnMMPyDn8gJwDjWVCD28xxlwm6TuSpqjc7OhpeNhhfpyq51JJ31W56dAt6b2Srpb0PElfrAxbJukeY0zLeSxniqR71dfw+JGkP5B0laTLJb1c0qckHRzrMrgOOLwsnU7riSeeUDqddrsUwDHkHH5AzuEH5BxoLBPdevybyjIda2SM0qckxVU+xOQF1tqHq6b9nzFml6SPqdz4eJek949xOZ+WtEHlw2b+n7X2J/2mPybpR8aYv5QUHOMyAAAAAABAlYk+kem1qm14mBH+jDtjzBWSrqvc/XK/hkePT0h6unL7ncaYUZ8t1BhzrcrnL5Gk99VpePSyZRynAgAAAADAOJjopsfUyu+eRsYnVD6XRbOkkLU2MMTPeO8BcXPV7a/WG2CtLUn6RlXtzx3Dct5e+X1O0mfG8HwAAAAAADAGE930OF75bSXda639K2vtHmttqtJgmEjXVn4nJT0+xLj7qm5fM5oFGGMi6juPx73W2kzl8aAxpt0Ys9AYExvNPIdY1njMBmhIxhhFIhFyDk8j5/ADcg4/IOdAY5nopsd96tvLY+8EL7u/FZXfu4c5pGRHneeM1CWSepoa24wxrcaYT0o6KelZSfsknTPG3GuMec4o512jqanpfJ4ONLTm5mZt3LhRzc3NbpcCOIacww/IOfyAnAONZaJPZPppSa9RufFxgzHGWGsn/KSmlb0rZlTuDnnFFGvtGWNMUlKTpPZRLmpl1e2AyicsXdpvTETSjZKeZ4y5zVr70VEuQ5LU1dU17JjW1tZhxwAAAAAA4BUT2vSw1j5ijPmIpL+VtFzSV4wx77bWnprIOiRVX362ewTje5oeo23XTqu6/R6V9/r4b0m3S9qq8qVyf1/SR1S+jO9HjDE7rLU/HuVy9KUvfWnYMbfeemvv7ZaW8ipIpVIqFos142KxmMLhsHK5nLLZbM20YDCoRCIha626uweuuqamJgUCAaXTaRUKtTvQRKNRRSIR5fP5AZfYDQQCvXur1GvgJBIJBYNBZTIZ5fP5mmmRSETRaFSFQmHApcGMMb1d9u7ubvXvscXjcYVCIWWzWeVyuZpp4XBYsVhMxWJRqVRqQE096zCZTKpUqj06a6h1GAqFFI/HVSqVlEwmB8y3ublZxpi6781Q67DnvZHqr8Oh3puh1mH1e1NvHfa8N6Ndh9XvTb112PPe5HI5nT17Vrt27dLSpUt7Hx/rOux5b4Zah+eT7/NZh0Pl+3zWYb33Zrh1yDaibCK3Eel0Wrt27dLy5cs1ffp0thGj2EaM53aWbUSZU9uIbDarXbt2afXq1QPmKbGN6MHniLLJuo3o6urS1q1bez+3jGQdso0o43NEn0baRmSzteuzWJxc196Y0KaHMeZ2STmVz+0xS9LrJP0/Y8y9kg5IGrL5Ya39wDiVUn0ejdygo/r0JCk+5KiBqo85iUm6V9JLrLU96Toh6fPGmCdVPvQnIOkfjDE/cWIPmE2bNvXevuGGGyRJO3bsGPAPf/ny5brgggt04sQJ7d69u2ZaW1ub1q5dq2KxWDO/Hhs3blQkEtGePXt06lTt27l48WK1t7fr7Nmz2r59e8205uZmbdiwQZK0efPmARuMyy67TE1NTTpw4ICOHj1aM629vV2LFy9Wd3e3nnjiiZppkUhEGzdulCRt27ZtwMbmkksu0dSpU3Xo0CF1dHTUTJs9e7YuvvhiZTKZAa/VGKPrr79eUnkd9t8or1y5UjNnztSxY8e0d2/tkVzTp0/X6tWrVSgU6q7Da665RqFQSLt379aZM2dqpi1ZskRz587V6dOntWPHjpppLS0tWr9+vSTVne8VV1yheDyu/fv36/jx4zXTFixYoIULF6qzs1Pbtm2rmRaLxXTllVdKkrZu3TrgP4J169ZpypQp6ujo0KFDh2qmzZkzR0uXLlUqlRpQUzAY1LXXlk+ts3379gEb+1WrVmnGjBk6evSo9u3bJ0l6+unyxZRmzJihVatWKZ/P132t1113nYwx2rlzp86dO1czbdmyZbrwwgt18uRJ7dy5s2balClTtG7dOllr6873qquuUjQa1d69e3Xy5MmaaYsWLdL8+fN19uxZPfXUUzXTEomELr/8cknSli1bBvwHs379erW0tKijo0OHDx+umTZ37lwtWbJE3d3d2rJlS820cDisq6++WpL05JNPDvgPfs2aNZo2bZqOHDmiAwcO1EybNWuWVqxYoWw2W/e1so0oc2Mb0dHRoenTp7ONGMM2ogfbiLJG3Ea0tLQol8upWCwO+PcosY3oweeIssm6jSiVSioUCr2fW3qwjSjjc0TZZNpGHOyofV1dXSPZb6BxmIk8usQYU9LAS9aq32ODGq8ruBhjZqrvpKrftda+epjxx1Ru0jxprV0ziuW8W9I/Vj203lq7eZCx35f0isrdS6y1W4eb/5133jlPUock3XLLLZoxY0bvtFAopFgsplKp1PufQE+3sPo23VdvdF8lb/+F5syZM9qxY4eWL1+uRCLBX3FHuQ75C83k2EakUint2LGj94M624jG/Ssu24ixbyMymYy2b9+uSy+9tO5JHtlGlPE5omyybiM6Ozu1efPm3s8tI1mHbCPK+BzRp5G2Ed985KA+dm9fc+W6+TEtOfFgz932O+64Y8hTRrjNraZH/2bHSE5tbMex6RGT1JPYe6y1LxlmfLfKe238xlq7cRTLeZukz1funrDWzhpi7FskfbFy9y3W2i8PN//qpsdb3/pWzZkzZ6SlAZNKV1eXNm3a1PuXDMCLyDn8gJzDD8g5vObLD+7TB/+zb++Z5yxq1qKjv+q52/BNj4m+eksPq9q9O+wwP+O78PKlY3v2h5o31FhjTJv6DlPpGGpsHdXjhwtC9diZo1wOAAAAAADox42mhxnDjxN6WlVLjDFDndtkedXtpwcdVV/1AXnD7aVSPX3UZ4aJxWLDDwImqXg8rksuuaTmZGCA15Bz+AE5hx+Qc6CxTPQla984wcsbyoOSrlN5L44Nkn47yLgbqm4/NJoFWGsPGGOelTRf0sJhLtF7UdXtQ4OMGVQoNNFvJTBxQqGQpk6d6nYZgKPIOfyAnMMPyDnQWCb6krVfn8jlDeM/JN1Wuf1G1Wl6GGMCKl9hRpLOSvrlGJbzA0l/qfLlaZ8n6X8HGffyqtsPDjJmUP1PYAN4STab1aFDhzR37lxFo1G3ywEcQc7hB+QcfkDOgcbi1jk9XGetfUTSA5W7bzbG1DtB6bskrajc/pS1tuZUvsaY5xhjbOXna4Ms6pOSek59+0/GmNb+A4wxfyjpOZW791hrR3vukAFnGQa8JJfLqaOjY8BZrwEvIefwA3IOPyDnQGNpmKaHMSY0zLk1nPBOla/iEpL0c2PMbcaYq4wxzzXGfEHSxyrjdkr6xFgWYK19VtLtlbtrJD1ijHmjMWZDZTmflvS1yvROlfcKAQAAAAAA58m1E0EYYyKS3iTpZkmXS5paefyspEcl/UjSV621jrVIrbWbjTGvkvQtlQ8/+XCdYTsl3WStHXhB55Ev5x+NMdMkvUfSxZK+UmfYcUk3W2t3jXU5AAAAAACgjyt7ehhj1kt6RtJnJT1fUpv6rtTSVnnsc5J2GGMudbIWa+1PJa2VdJfKDY6UyufveEzlJsWl1trd47Cc2yRdI+mbkvZLyko6p3KD5+8kLbPWPny+ywEAAAAAAGUTvqeHMWatpPslxdV3Odr+VzTpeXyhpPuNMRuttU86VZO19oCkWys/o3nerzSKS+pWmhqONDa4egu8LBwOa/bs2QqHw26XAjiGnMMPyDn8gJwDjWVCvylXrobyHUkJlRsdg12+tfrxJknfMcasGeJyr74Xi8XcLgFwTCwW08UXNh5n8gAAIABJREFUX+x2GYCjyDn8gJzDD8g50Fgm+vCWl0tartqmhhnkp9oKSb8/EQVOVsVi0e0SAMcUi0Ulk0lyDk8j5/ADcg4/IOdAY5nopsfNVbeNpJOS/kLSUkmxys/SymMnh3gu+kmn026XADgmlUrpscceUyqVcrsUwDHkHH5AzuEH5BxoLBN9IogrVN7Lw0hKSrraWrun35g9kv7ZGPMzSZvVd+6PKyayUAAAAAAAMLlN9J4esyq/raT/qtPw6FW5dOs96jvUZdZgYwEAAAAAAPqb6KZHvOp2/8NX6jlVdZszdQIAAAAAgBGb6KbHmcrvkR6uUj3m7PiXA2CyMGbEV4cGJi1yDj8g5/ADcg40jok+p8du9R2mst4Y83fW2g/WG2iM+TtJ69V3pZfdE1DfpNXc3Ox2CYBjWlpadP3117tdBuAocg4/IOfwA3IONJaJbnrcJ+lq9Z3M9P3GmD+U9N+SOipj2iW9UNKSqnFW0q8muFYAAAAAADCJTfThLV+W1HPB6p6GxlJJb5f00crP2yuPVe8TVqw8F4PgkljwsmQyqccff1zJZNLtUgDHkHP4ATmHH5BzoLFMaNPDWrtX0mfV19Cw6mt+VP/0PN4z5jPW2n0TWetkUyqV3C4BcEypVFJ3dzc5h6eRc/gBOYcfkHOgsUz0nh6S9G5J/6XaPTlsv58eRuXL1v71hFUHAAAAAPj/2bvzKDnu+t77n++s3bNosRYvQrYsZFveZXmVd8cJXHAIS/Ic4Lk3CYkJhOc+OU4gXMJDEmxugATiAIeELCZscY7j3NzrEK5vEpNAjG0M3mRbthhkWZaQZcuL9unZZ77PH1Xt6Znp6Zmemeqqqd/7dU6frpr6ddV3ej4q9XynFiAXGt70cPcRSW+R9DFFd2SZfJRH+XFY0v8n6W3xawAAAAAAAGat0RcylSS5u0v6tJl9QdJ1ki6WtCpe/IqkhyV91925UAUAAAAAAJiTVJoeZXFT4+74gXlob29PuwQgMYVCQWeddZYKhULapQCJIecIATlHCMg5kC2pNj2wcFpbW9MuAUhMa2urVq1aNfNAYBEj5wgBOUcIyDmQLWlcyBQJGBoaSrsEIDFDQ0Pau3cvOUeukXOEgJwjBOQcyJZEjvQws+9UzP6Du3+pytfr5e5+/fwqyy92qsizwcFB7dq1S8uWLVNbW1va5QCJIOcIATlHCMg5kC1Jnd5yrcZvPfv4NF+vh83xdQAAAAAAIFBpXdPD6hhLswMAAAAAANQtraYHjQwAAAAAAJCoJJse0x3NUc9RHpillhZuxIP8amlp0YoVK8g5co2cIwTkHCEg50C2JPUv8dSK6aPTfB0LiPuAI8+KxaLOOeectMsAEkXOEQJyjhCQcyBbEml6uPueer6O+RsbG0u7BCAxY2NjGhkZUUtLi5qauNM28omcIwTkHCEg50C28K8wJ/r6+tIuAUhMqVTSgw8+qFKplHYpQGLIOUJAzhECcg5kSyabHma2xMxWpV0HAAAAAABYvBre9DCzkyoeKyYt+wUz+5GkQ5L2m9kBM/ukmbU2uk4AAAAAALC4NbTpYWaXS9pb8fi9imVvlnSnpNMV3eHFJC2X9DuS/rqRdQIAAAAAgMWv0Ud6XK3xhoYk/Y+KZb9f8XWveJik/2xmWxpVJAAAAAAAWPwaffPoCyqmS5J+IEWnvEi6RFGTQ5rY/Cj7vyU9mHSBi1VnZ2faJQCJ6erq0hVXXKHm5ua0SwESQ84RAnKOEJBzIFsafaTHafGzS9rm7qPx/BWTxv2tpH9V1PwoNz4uTb68xcvMZh4ELFJmppaWFnKOXCPnCAE5RwjIOZAtjW56rNR4E+OZiq+fVTH9kLv/oqQbJO2Iv2aSTk2+vMWrv78/7RKAxPT19enJJ5/k1szINXKOEJBzhICcA9mSRtOj7GjF9BkV09+XJHcfU3Q6S7lF2p1saYvb6OjozIOARWp0dFSHDh0i58g1co4QkHOEgJwD2dLopkfl9roqpiubHpVHgByrmOb4MAAAAAAAMGuNbnocjp9N0uWSZGbLJJ1dMWZHxXRlY6SyAQIAAAAAAFBTo+/eslPS6nj6NDP7vqLGRlvFmCcqpk+On13SvuTLAwAAAAAAedHoIz3ujZ9d0dEel0o6p+Jrj7v7gYrx52r8wqc9DalwkWpra5t5ELBItbe3a8OGDWpvb0+7FCAx5BwhIOcIATkHsqXRTY8vSxqOp33SsyT9RXnCzM6VtKpi2cPJlra40fRAnrW1tWnNmjXkHLlGzhECco4QkHMgWxra9HD35yR9QNKIoiM9yg9J+kd3v61i+Dvj5/Ly7zSkyEVqeHh45kHAIjU8PKyXXnqJnCPXyDlCQM4RAnIOZEujj/SQu39F0SktvyfpNkl/IukGd//5SUMfkvRr5Ye7P9bQQheZwcHBtEsAEjMwMKCenh4NDAykXQqQGHKOEJBzhICcA9nS6AuZSpLc/RlJn5xhzD81qBwAAAAAAJBDDT/SAwAAAAAAoBFoegAAAAAAgFxK5PQWM/tKxew97v53Vb5eL3f3G+dXWX41NzenXQKQmObmZnV3d5Nz5Bo5RwjIOUJAzoFsSeqaHu/R+K1oD0v6uypfr4fFr6PpMY1isZh2CUBiOjo6tHnz5rTLABJFzhECco4QkHMgW1K5kKnGb0MLAAAAAACQiLSu6eF1PjCD3t7etEsAEnPs2DHde++9OnbsWNqlAIkh5wgBOUcIyDmQLUke6THd0Rwc5QEAAAAAABKXVNPjuorp56f5OgAAAAAAQGISaXq4+731fB0AAAAAAGChpXVNDwAAAAAAgESldfcWLLCOjo60SwAS09nZqUsuuUTt7e1plwIkhpwjBOQcISDnQLY0tOlhZidK+rWKLz3r7n87zdj/Iml9xZduc/cXk6xvMWtq4qAd5FdTU5OKxWLaZQCJIucIATlHCMg5kC2NPtLjbZJu1vhtaN9RY+yrkr5RMfYVSX+eWGWL3MDAgJYsWZJ2GUAi+vv7tXv3bq1bt44PEcgtco4QkHOEgJwD2dLowwPeED+bpBfc/ZvTDXT3f5G0R+O3uH3DdGMhjYyMpF0CkJiRkRG9/PLL5By5Rs4RAnKOEJBzIFsa3fTYGD+7pAdmMf7BKq8FAAAAAACYUaObHido4ukqMzkQP1v8WgAAAAAAgFlpdNOj8qS2lbMYXzmmsMC1AAAAAACAHGt00+NQ/GySrjOzae/jFC/7KY0fGXI44doWtdbW1rRLABLT1tamU045RW1tbWmXAiSGnCME5BwhIOdAtjS66fGsxi9MukrSn9QY+7l4jBQ1Pp5NsK5Fj/uAI8/a29u1bt06co5cI+cIATlHCMg5kC2NbnrcFz+7oubHr5vZA2b2y2Z2afz4ZTO7X9L7K8ZJ0v0NrnVR4erQyLORkREdPHiQnCPXyDlCQM4RAnIOZEujmx5f1/jpKuWGxmWSviLp+/HjK5K2aLzZUfaNBtW4KA0MDKRdApCY/v5+bdu2Tf39/WmXAiSGnCME5BwhIOdAtjS06eHuPZLu0HhDo9z4qPaobI78nbtvb2StAAAAAABgcWv0kR6S9AFJT2ti46PaQ/GY7fFrAAAAAAAAZq3hTQ93PybpCkl3aeKRHWWVX7tL0pXufrTRdQIAAAAAgMWtJY2Nxk2MnzezCyX9gqRLJR0fL35Z0g8l/YO7P5JGfYtRU1MaB+0AjdHU1KRCoUDOkWvkHCEg5wgBOQeyJZWmR5m7Pyrp0TRryIuOjo60SwAS09nZqUsvvTTtMoBEkXOEgJwjBOQcyBbajwAAAAAAIJdSb3qY2SYz+4CZ3WJmt5rZW9OuaTEqlUpplwAkpre3V9///vfV29ubdilAYsg5QkDOEQJyDmRLaqe3mNm7Jd0sacPURfYtRdf1WBF/7d/d/dcaWN6i4+4zDwIWKXfX8PAwOUeukXOEgJwjBOQcyJaGH+lhkdsk3S7pNFW5g4u7j0n6nqR18eMXzWx5o2sFAAAAAACLVxqnt/x3STcqanJ4xWOyv4+fXVKrpP/UkOoAAAAAAEAuNLTpYWYbJP03TWx02DTDH5J0qGL+ugRLAwAAAAAAOdPoIz3er/HriJikXkm3qUrjw6OT4J6sWHZuIwpcrIrFYtolAInp6OjQpk2buDUzco2cIwTkHCEg50C2NLrpcb2iIzxM0rCkK939/fGyaqe47I6fTdKpiVe3iDU3N6ddApCY5uZmLV26lJwj18g5QkDOEQJyDmRLo5sep8TPLulf3X3bDOMr7/O0NJmS8mFwcDDtEoDEDA4OaufOneQcuUbOEQJyjhCQcyBbGt306KqYfn4W41dUTHPPpxqGh4fTLgFIzNDQkPbt26ehoaG0SwESQ84RAnKOEJBzIFsa3fSovDDpKdOOGne+xpsdh2oNBAAAAAAAqNTopsduRdfnMEk/bWavn26gmf2spDPjWZe0I/HqAAAAAABAbjS66fG9+NkltUr6DzN7/6Qxa8zso5Lu1PhFTyXpvsaUCAAAAAAA8qDRTY+vavx0FZe0RtKX4vnyESC/IOkPJFXeg3VM0tcaU+Li1NLSMvMgYJFqbW3VSSedpNbW1rRLARJDzhECco4QkHMgWxra9HD3H0n6usaP3qg8kqOs3PyobI58xd13NaTIRapQKKRdApCYQqGg0047jZwj18g5QkDOEQJyDmRLo4/0kKT/KumHmtj4qPZQPOaHkn6zwTUuOqOjo2mXACRmdHRUx44dI+fINXKOEJBzhICcA9nS8KaHu/dLulbSn0ka0fiRHZMfo5L+XNJPxa9BDf39vEXIr76+Pj322GPq6+tLuxQgMeQcISDnCAE5B7IllQtBuPugpN8wsz+U9HOSLpW0Kl78sqSHJX3L3femUR8AAAAAAFj8Ur36pbvvU3Q0x5+nWQcAAAAAAMifhjY9zKzyYqSDki50d477AgAAAAAAC67RR3qsVXQdEZP0LzQ8Fo7Z5JvgAPlhZmpubibnyDVyjhCQc4SAnAPZ0uimx0uSTlR0d5bdDd52rnV2dqZdApCYrq4uXXnllWmXASSKnCME5BwhIOdAtjT67i0PafxWtSsavG0AAAAAABCQRjc9/iJ+NklvMLPjGrz9qszsFDO71cx6zKxkZgfN7GEz+7CZdSS0zQ4z22VmHj92z2d93BILeVYqlfTwww+rVCqlXQqQGHKOEJBzhICcA9nS0KaHu98j6Qvx7BJJ/9vMTmlkDZOZ2VskPSnpg5LOkNQhabmkiyR9RtJWM9uQwKY/IenUhVrZ2NjYQq0KyJyxsTH19fWRc+QaOUcIyDlCQM6Rdw89dzDtEurS6Lu3/L6kQ5Kel/Q6SZdKesbM7lPUeDis6HofVbn7Jxa4ngsk3SmpKKlX0qclfTeef5ekX5N0uqS7zewidz+2gNv9TUkDkoYldS/EegEAAAAAwLhGX8j0Zo03NVzRaS4tkq6NHzNZ0KaHoqNOipJGJL3B3R+sWPYdM3tG0dEep0v6kKL658XMmiXdJqlZ0i2SbhRNDwAAAABABp1yXCJXfGiYRl/To8zih2u8+THTY2ELMLtE0lXx7F9PaniU3SrpR/H0TWbWugCbvknShZJ+LOmPFmB9AAAAAAAk4rqNq/Wui9eqtXlx3oY5raZHudkxeX66RxLeVjH91WoD3H1M0jfi2WWSrpvPBuPrl5SPVvl1dx+az/oqFQqFhVoVkDnFYlFnn322isVi2qUAiSHnCAE5RwjIOfKmucn0hz9/np665Y166GPXa3V3e9ol1SWNpsdsjupI9CiPWPnm2SVJj9YYd2/F9BXz3OaXJHVK+ht3/495rmuClpZGn6kENE5LS4tWrlxJzpFr5BwhIOcIATlHXrW3NGt1d0FNTYvriI9G/0v8lQZvr5Yz4+ed7j5SY1xPldfUzczeJenNii7k+qG5rmc6Q0MLdtAIkDlDQ0Pav3+/TjjhBLW1taVdDpAIco4QkHOEgJwD2dLQpoe7f72R25uOmRUkrYxnn6811t0PmVlJ0REaa+e4veWSPh/P/o67vzKX9dRy8ODBGXeqS5YsWejNAg0xODio5557TsuXL+fDA3KLnCME5BwhIOdAtjT6lrXNklZIGnD3o43c9iSVd0vpncX4ctOja47b+6yk4yU9qOjOLQvujjvumHHMBz/4wdemu7ujt6Cvr0+jo6MTxhUKBbW2tmpoaEiDg4MTljU3N6ujo0Purt7eqW9dZ2enmpqa1N/fr5GRiQfQtLe3q62tTcPDwxoYGJiwrKmpSZ2dnZKkY8em3hm4o6NDzc3NGhgY0PDw8IRlbW1tam9v18jIiPr7+ycsMzN1dUU/tt7eXrlPvERMsVhUS0uLBgcHpxwt09raqkKhoNHRUfX19U2pqfwelkqlKfdhr/UetrS0qFgsamxsTKVSacp6u7q6ZGZVfza13sPyz0aq/h7W+tnUeg8rfzbV3sPyz6be97DyZ1PtPSz/bIaGhl57bfl5Pu9h+WdT6z2cT77n8x7Wyvd83sNqP5uZ3kP2EZFG7iPK6xgcHFR3dzf7iDr2EQu5n2UfEUlqH1F+T9297hyGvo8o43NEJOv7CElTamYfEeFzRGQx7yOiS18uHok3PczMJP2qpPdKukjxdUTM7KCk/yPp0+7eM/0aElF51c/ZnBdSTlLdVyMys6sVff8jii5emtSFWWf02GOPvTZ9zTXXSJJ6enqm/MPfuHGjjj/+eL3yyivauXPnhGXLly/Xeeedp9HR0QnrK9uyZYva2tr07LPP6sCBAxOWrV+/XmvXrtXhw4e1ffv2Ccu6urp04YUXSpK2bt06ZYdx0UUXqbOzU3v27NH+/fsnLFu7dq3Wr1+v3t5ePfHEExOWtbW1acuWLZKkbdu2TdnZnH/++Vq2bJn27dunvXv3Tlh2wgkn6IwzztDAwMCU79XMdPXVV0uK3sPJO+WzzjpLq1at0ksvvaRdu3ZNWLZixQqdc845GhkZqfoeXnHFFWppadHOnTt16NChCcs2bNigNWvW6ODBg+rpmfjPpru7W5s3b5akquu95JJLVCwWtXv3br388ssTlp1yyilat26djh49qm3btk1YVigUdOmll0qSnnzyySn/EWzatElLly7V3r17tW/fvgnLTjrpJJ122mnq6+ubUlNzc7OuvDK6tM727dun7OzPPvtsrVy5Uvv379dzzz0nSa99zytXrtTZZ5+t4eHhqt/rVVddJTPTjh07dOTIkQnLTj/9dJ144ol69dVXtWPHjgnLli5dqk2bNsndq673sssuU3t7u3bt2qVXX311wrJTTz1VJ598sg4fPqynn356wrKOjg5dfPHFkqTHH398yn8wmzdvVnd3t/bu3asXXnhhwrI1a9Zow4YN6u3t1eOPPz5hWWtrqy6//HJJ0lNPPTXlP6dzzz1Xxx13nF588UXt2bNnwrLVq1frzDPP1ODgYNXvlX1EJI19xPPPP6+VK1eyj5jDPqKMfUQki/uI8of4sbGxKf8eJfYRZXyOiCzmfYSkKe8x+4gInyMii3kfMfnfcdZZkr+Dm1mHpLsk/XT5S5OGuKJmwC+7+98lVsjUulZJKu+t73T3d80w/iVJqyU95e7n1rGddklPSDpD0q3u/ttVxuyWdIqkPe6+brbrlqRbbrnldZL2StLb3/52rVy58rVlLS0tKhQKGhsbe+0/gfIHjcppuq/57L7m7S80hw4dUk9PjzZu3KiOjg7+ilvne8hfaBbHPqKvr089PT2vfVBnH5Htv+Kyj5j7kR7bt2/XBRdcoOjvYhOxj4jwOSKyWPcRR48e1datW1/73DKb95B9RITPEeOyvI+47lN369rhR8qL1n784x+vecmItCXd9PiKpPdUfGnyxsr/2w1L2uLuU1tRydRVkFRO7N3u/rMzjO9VdHrLD9x9Sx3b+YSk31PUmDjT3aekbqGaHh/4wAe0evXqel4OLBr9/f3atWuX1q9fz+3fkFvkHCEg5wgBOUfe/dSn/1nXDD1Uns180yOx01vM7FxFDY9aXZXyslZJn9H4ESGJcvcBMzug6Poir6s1Nr4IaWc8u7fW2Co+Ej//m6S3VPuLRsW6O+M7vEjSy+7+nXo2VCgUZh4ELFLl+90DeUbOEQJyjhCQcyBbkrymxy9X+Vq101vKrjOzte5eb2NhrrZLukrSBjNrqXHb2o0V0z+qcxvlyzX/ima+Xe9KSeWrkd4rqa6mx+RDnoA8GRsb0/DwsFpbW9XU1JR2OUAiyDlCQM4RAnIOZEuS/wovr5g2SYckfUzSWyT9kqRvamoTZNanjiyA++PnTkkX1hh3TcX0A8mVMz/VzgMD8qJUKukHP/hB1fMSgbwg5wgBOUcIyDmQLUk2PV6v6EgOkzQg6XJ3/7S73+3ut7v72yX9mSY2Pl6fYD2T/WPFdNWjMMysSVGDRpIOS/puPRtwd5vpIal8KeQ9FV+/ts7vBQAAAAAATJJk02Np/OyS/s3dd1QZ8/mKMZK0LMF6JnD3hyTdF8/eaGbVjjL5kKQz4+kvuPuES/ma2bVm5vHja8lVCwAAAAAA6pXkNT3aNN7MeG6aMbsmzbcmV05VNyk6ZaUo6R4z+5SiozmKkt4l6X3xuB2Sbm1wbQAAAAAAYB6SbHpUGq32RXf3ae5o0hDuvtXM3inpdklLJH2qyrAdkm5w96k3dAYAAAAAAJnVqKZHZrn7t8zsPEVHfdyg6Ba2Q5J2Svofkv7U3TN/ldDOzs6ZBwGLVFdXl6666iql2SQFkkbOEQJyjhCQcyBbGtX0+AUz2zTPce7u1y9kURUr3iPpg/Gjntf9h6begabeba+bz+vL2Kkiz8yMjCP3yDlCQM4RAnIOZEsjmh4maU38qDVGNcaZxq8Pgir6+/u1ZMmStMsAEtHX16cdO3bo9NNPV0dHR9rlAIkg5wgBOUcIyDmQLY060mO2rc5q42h2zMLoaNXLpgC5MDo6qiNHjpBz5Bo5RwjIOUJAzoFsaUTTg6YFAAAAAABouKSbHpzMBgAAAAAAUpFk0+OWBNcNAAAAAABQU2JND3en6dFA7e3taZcAJKZQKOj0009XoVBIuxQgMeQcISDnCAE5B7KlURcyRcJaW1vTLgFITGtrq0488cS0ywASRc4RAnKOEJBzIFua0i4AC2N4eDjtEoDEDA8P68UXXyTnyDVyjhCQc4SAnAPZQtMjJwYHB9MuAUjMwMCAduzYoYGBgbRLARJDzhECco4QkHMgW2h6AAAAAACAXKLpAQAAAAAAcommBwAAAAAAyCWaHjnR3NycdglAYpqbm7V06VJyjlwj5wgBOUcIyDmQLdyyNieKxWLaJQCJ6ejo0KZNm9IuA0gUOUcIyDlCQM6BbOFIj5xw97RLABLj7hobGyPnyDVyjhCQc4SAnAPZQtMjJ0qlUtolAInp7e3Vfffdp97e3rRLARJDzhECco4QkHMgW2h6AAAAAACAXKLpAQAAAAAAcommBwAAAAAAyCWaHgAAAAAAIJe4ZW1OdHR0pF0CkJjOzk5ddtllam1tTbsUIDHkHCEg5wgBOQeyhaZHTjQ1cdAO8qupqUnt7e1plwEkipwjBOQcISDnQLbwm3JODAwMpF0CkJj+/n49/fTT6u/vT7sUIDHkHCEg5wgBOQeyhaZHToyMjKRdApCYkZERvfrqq+QcuUbOEQJyjhCQcyBbaHoAAAAAAIBcoukBAAAAAAByiaYHAAAAAADIJZoeOdHW1pZ2CUBi2tvbdeqpp3IldOQaOUcIyDlCQM6BbOGWtTlB0wN51tbWppNPPjntMoBEkXOEgJwjBOQcyBaO9MgJrg6NPOMq6AgBOUcIyDlCQM6BbKHpkRMDAwNplwAkhvvdIwTkHCEg5wgBOQeyhaYHAAAAAADIJZoeAAAAAAAgl2h6AAAAAACAXKLpkRNNTfwokV9NTU3q6Ogg58g1co4QkHOEgJwD2cIta3Oio6Mj7RKAxHR2duriiy9OuwwgUeQcISDnCAE5B7KF9iMAAAAAAMglmh45USqV0i4BSExvb6/uv/9+9fb2pl0KkBhyjhCQc4SAnAPZQtMjJ9w97RKAxLi7RkdHyTlyjZwjBOQcISDnQLbQ9AAAAAAAALlE0wMAAAAAAOQSTQ8AAAAAAJBLND1yolgspl0CkJiOjg5t3ryZWzMj18g5QkDOEQJyDmRLS9oFYGE0NzenXQKQmObmZnV3d6ddBpAoco4QkHOEgJwD2cKRHjkxMDCQdglAYgYGBvTMM8+Qc+QaOUcIyDlCQM6BbKHpkRMjIyNplwAkZnh4WC+88IKGh4fTLgVIDDlHCMg5QkDOgWyh6QEAAAAAAHKJpgcAAAAAAMglmh4AAAAAACCXaHrkRGtra9olAIlpa2vTmjVr1NbWlnYpQGLIOUJAzhECcg5kC7eszYn29va0SwAS097erg0bNqRdBpAoco4QkHOEgJwD2cKRHjkxOjqadglAYkZHR3XkyBFyjlwj5wgBOUcIyDmQLTQ9cqK/vz/tEoDE9PX16fHHH1dfX1/apQCJIecIATlHCMg5kC00PQAAAAAAQC7R9AAAAAAAALlE0wMAAAAAAOQSTY+cMLO0SwASY2ZqbW0l58g1co4QkHOEgJwD2cIta3Ois7Mz7RKAxHR1denyyy9PuwwgUeQcISDnCAE5B7KFIz0AAAAAAEAu0fTICW6JhTwrlUr64Q9/qFKplHYpQGLIOUJAzhECcg5kC02PnBgbG0u7BCAxY2NjGhgYIOfINXKOEJBzhICcA9lC0wMAAAAAAOQSTQ8AAAAAAJBLND0AAAAAAEAu0fTIiUKhkHYJQGKKxaLOPfdcFYvFtEsBEkPOEQJyjhCQcyBbWtIuAAujpYUfJfKrpaVFxx13XNplAIki5wgBOUcIyDmQLRzpkRODg4NplwAkZnBwULt37ybnyDVyjhCQc4SAnAPZQtMjJ4aHh9MuAUjM0NCQ9uzZo6F6gioBAAAgAElEQVShobRLARJDzhECco4QkHMgW2h6AAAAAACAXKLpAQAAAAAAcommBwAAAAAAyCWaHjnB3VuQZy0tLVq9ejU5R66Rc4SAnCME5BzIFv4l5kShUEi7BCAxxWJRZ555ZtplAIki5wgBOUcIyDmQLRzpkRNjY2NplwAkZmxsTP39/eQcuUbOEQJyjhCQcyBbaHrkRF9fX9olAIkplUp66KGHVCqV0i4FSAw5RwjIOUJAzoFsoekBAAAAAAByiaYHAAAAAADIJZoeAAAAAAAgl2h6AAAAAACAXOKWtTnR1dWVdglAYrq7u3XNNdekXQaQKHKOEJBzhICcA9nCkR4AAAAAACCXaHrkRH9/f9olAInp6+vTY489xq2ZkWvkHCEg5wgBOQeyhaZHToyOjqZdApCY0dFRHTt2jJwj18g5QkDOEQJyDmQLTQ8AAAAAAJBLND0AAAAAAEAu0fQAAAAAAAC5RNMjJ9rb29MuAUhMoVDQxo0bVSgU0i4FSAw5RwjIOUJAzoFsaUm7ACyM1tbWtEsAEtPa2qrjjz8+7TKARJFzhICcIwTkHMgWjvTIiaGhobRLABIzNDSkffv2kXPkGjlHCMg5QkDOgWyh6ZET7FSRZ4ODg9q5c6cGBwfTLgVIDDlHCMg5QkDOgWyh6SHJzE4xs1vNrMfMSmZ20MweNrMPm1nHPNfdYWbvMLM/j9d5yMyGzeyAmT1oZjeb2QkL9b0AAAAAAIBI8Nf0MLO3SLpd0pKKL3dIuih+vNfMbnD3nXNY93mSHpDUVWXxcZIuix+/ZWbvc/c7690GAAAAAACoLugjPczsAkl3Kmp49Er6mKTLJV0v6bZ42OmS7jaz7jlsYonGGx4PSPqopJ+RtFnSGyX9paSxeNzfmtmb5vadAAAAAACAyUI/0uMLkoqSRiS9wd0frFj2HTN7RtJnFDU+PiTp5jrXPybp7yXd4u7bqyy/x8z+WdJdkpolfdHMTnN3r3M7am5urvclwKLR3Nys5cuXk3PkGjlHCMg5QkDOgWwJ9kgPM7tE0lXx7F9PaniU3SrpR/H0TWZW131h3f377v7OaRoe5THflPS/4tnXS7qgnm2UFYvFubwMWBQ6Ojp03nnnqaNjXpfYATKNnCME5BwhIOdAtgTb9JD0torpr1Yb4O5jkr4Rzy6TdF1CtXy3Yvr1c1nBHA4OARYNd9fIyAg5R66Rc4SAnCME5BzIlpCbHlfGzyVJj9YYd2/F9BUJ1dJeMT06lxWUSqUFKgXInt7eXj3wwAPq7e1NuxQgMeQcISDnCAE5B7Il5Gt6nBk/73T3kRrjeqq8ZqFdUzH9o2lH1dDb26ujR4/WHLNkyZKaywEAAAAAyJMgmx5mVpC0Mp59vtZYdz9kZiVJnZLWJlDL+ZJuiGe3ufucmh533HHHjGM++MEPvjbd3R3djKavr0+joxMPLikUCmptbdXQ0JAGBwcnLGtublZHR4fcvWr3urOzU01NTerv79fIyMReUnt7u9ra2jQ8PKyBgYEJy5qamtTZ2SlJOnbs2JT1dnR0qLm5WQMDAxoeHp6wrK2tTe3t7RoZGVF/f/+EZWamrq7oBjq9vb1TDjMsFotqaWnR4OCghoaGJixrbW1VoVDQ6Oio+vr6ptRUfg9LpZLGxsYmLKv1Hra0tKhYLGpsbKzqETpdXV0ys6o/m1rvYflnI1V/D2v9bGq9h5U/m2rvYflnU+97WPmzqfYeln82Q0NDr722/Dyf97D8s6n1Hs4n3/N5D2vlez7vYbWfzUzvIfuISCP3EeV1DA4Oqru7m31EHfuIhdzPso+IJLWPKL+n7l53DkPfR5TxOSKS9X2EpCk1s4+I8Dkispj3EdFVIBaPIJsekipvPzub487KTY+umQbWw8zaJX1Z0Z1bpOiWuYl57LHHXpu+5pro4JKenp4p//A3btyo448/Xq+88op27tw5Ydny5ct13nnnaXR0dML6yrZs2aK2tjY9++yzOnDgwIRl69ev19q1a3X48GFt3z7x2q5dXV268MILJUlbt26dssO46KKL1NnZqT179mj//v0Tlq1du1br169Xb2+vnnjiiQnL2tratGXLFknStm3bpuxszj//fC1btkz79u3T3r17Jyw74YQTdMYZZ2hgYGDK92pmuvrqqyVF7+HknfJZZ52lVatW6aWXXtKuXbsmLFuxYoXOOeccjYyMVH0Pr7jiCrW0tGjnzp06dOjQhGUbNmzQmjVrdPDgQfX09ExY1t3drc2bN0tS1fVecsklKhaL2r17t15++eUJy0455RStW7dOR48e1bZt2yYsKxQKuvTSSyVJTz755JT/CDZt2qSlS5dq79692rdv34RlJ510kk477TT19fVNqam5uVlXXhmdZbZ9+/YpO/uzzz5bK1eu1P79+/Xcc89J0mvf88qVK3X22WdreHi46vd61VVXycy0Y8cOHTlyZMKy008/XSeeeKJeffVV7dixY8KypUuXatOmTXL3quu97LLL1N7erl27dunVV1+dsOzUU0/VySefrMOHD+vpp5+esKyjo0MXX3yxJOnxxx+f8h/M5s2b1d3drb179+qFF16YsGzNmjXasGGDent79fjjj09Y1traqssvv1yS9NRTT035z+ncc8/VcccdpxdffFF79uyZsGz16tU688wzNTg4WPV7ZR8RSWMf8fzzz2vlypXsI+awjyhjHxHJ4j6i/CF+bGxsyr9HiX1EGZ8jIot5HyFpynvMPiLC54jIYt5HTP53nHUW4gV2zGytpJ/Es3/j7r80w/ifKDrK41l337CAddwm6b3x7Nfd/T31vP6WW255naS9kvT2t79dK1eufG1ZS0uLCoWCxsbGXvtPoPxBo3Ka7ms+u695+wvNoUOH1NPTo40bN6qjo4O/4tb5HvIXmsWxj+jr61NPT89rH9TZR2T7r7jsI+Z+pMf27dt1wQUXyMymrJd9RITPEZHFuo84evSotm7d+trnltm8h+wjInyOGJflfcR1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\n",
      "text/plain": [
       "<Figure size 1200x740 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "\n",
    "ps, rs, ths = ([], [], [])\n",
    "th = np.max(pred_es)\n",
    "while th >= 0.0:\n",
    "    p, r = pr_at_th(th)\n",
    "    ps.append(p)\n",
    "    rs.append(r)\n",
    "    ths.append(th)\n",
    "    th -= 0.0005\n",
    "    \n",
    "from sklearn import metrics\n",
    "\n",
    "print(f'AUC: {metrics.auc(rs, ps)}, max R: {max(rs)}, max P: {max(ps)}')\n",
    "    \n",
    "i = len(rs) - 1\n",
    "while rs[i] == 1.0:\n",
    "    i -= 1\n",
    "i += 1\n",
    "print(f'100% recall at: {int(ps[i] * 100)}%, threshold: {ths[i]}')\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(6, 3.7), dpi=200)\n",
    "\n",
    "ax.spines['top'].set_color('#808080')\n",
    "ax.spines['right'].set_color('#808080')\n",
    "ax.spines['left'].set_color('#808080')\n",
    "ax.spines['bottom'].set_color('#808080')\n",
    "ax.tick_params(direction='in', color='#808080')\n",
    "\n",
    "plt.grid(color='#c0c0c0', linestyle='--', linewidth=0.5)\n",
    "\n",
    "plt.ylabel('Precision', fontweight='bold')\n",
    "plt.xlabel('Recall', fontweight='bold')\n",
    "\n",
    "plt.xlim((0.0, 1.0))\n",
    "plt.ylim((0.0, 1.0))\n",
    "\n",
    "_ = plt.plot(rs, ps)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
